package org.example.api.product;

import com.mysql.jdbc.StringUtils;
import org.example.table.Product;

import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.annotation.Resource;
import java.util.HashMap;
import java.util.Map;

@CrossOrigin
@RestController
public class SaveProductApi {
    @Resource
    JdbcTemplate jdbcTemplate;

    @PostMapping("/product/save")
    public Object handle(Product product) {
        Map map = new HashMap();
        //校验从页面传过来的商品数据不能为空
        if(StringUtils.isNullOrEmpty(product.getName()) ){
            map.put("code", "-1");
            map.put("message", "填入姓名不能为空");
            return map;
        }
        if(product.getPrice() == null){
            map.put("code", "-1");
            map.put("message", "填入价格不能为空");
            return map;
        }
        //########################### 其他数据库约束 ############################


        //判断商品是否已存在
        String sql = "select count (*) from product where name = ?";
        Integer count = jdbcTemplate.queryForObject(sql,  Integer.class, product.getName());
        if(count > 0 ){
            map.put("code", "-1");
            map.put("message","商品已存在");
        }


        sql = "insert into `product`(`name`, `brand`, `price`, `discount`, `stock`) values (?,?,?,?,?)";    //先用占位符防止被sql注入攻击
        Object [] params = {
                product.getName(),
                product.getBrand(),
                product.getPrice(),
                product.getDiscount(),
                product.getStock()
        };

        jdbcTemplate.update(sql, params);

  //      Map map = new HashMap();
        map.put("code", "1");
        map.put("message", "商品添加成功");
        return map;
    }

}
